var data = []; var m = 1; var b = 0; function setup() { createCanvas(400, 400); } function linearreg() { var xsum = 0; var ysum = 0; for(var i = 0; i < data.length; i++) { xsum += data[i].x; ysum += data[i].y; } var xmean = xsum / data.length; var ymean = ysum / data.length; var num = 0; var den = 0; for(i = 0; i < data.length; i++) { var x = data[i].x; var y = data[i].y; num += (x - xmean) * (y - ymean); den += (x - xmean) * (x - xmean); } m = num / den; b = ymean - (m * xmean); } function drawline() { var x1 = 0; var y1 = (m * x1) + b; var x2 = 1; var y2 = (m * x2) + b; x1 = map(x1, 0, 1, 0, width); y1 = map(y1, 0, 1, height, 0); x2 = map(x2, 0, 1, 0, width); y2 = map(y2, 0, 1, height, 0); stroke(255, 0, 255); line(x1, y1, x2, y2); } function mousePressed() { var x = map(mouseX, 0, width, 0, 1); var y = map(mouseY, 0, height, 1, 0); var point = createVector(x, y); data.push(point); } function draw() { background(51); for(var i = 0; i < data.length; i++) { var x = map(data[i].x, 0, 1, 0, width); var y = map(data[i].y, 0, 1, height, 0); ellipse(x, y, 8, 8); } if(data.length > 1) { linearreg(); drawline(); } }